package com.hospital.util;

import com.hospital.entity.User;

/**
 * 用户上下文工具类
 * 使用ThreadLocal存储当前登录用户信息
 *
 * @author Hospital Management System
 */
public class UserContext {

    private static final ThreadLocal<User> userHolder = new ThreadLocal<>();

    /**
     * 设置当前用户
     *
     * @param user 用户信息
     */
    public static void setCurrentUser(User user) {
        userHolder.set(user);
    }

    /**
     * 获取当前用户
     *
     * @return 当前用户信息
     */
    public static User getCurrentUser() {
        return userHolder.get();
    }

    /**
     * 获取当前用户ID
     *
     * @return 用户ID
     */
    public static Long getCurrentUserId() {
        User user = getCurrentUser();
        return user != null ? user.getId() : null;
    }

    /**
     * 获取当前用户名
     *
     * @return 用户名
     */
    public static String getCurrentUsername() {
        User user = getCurrentUser();
        return user != null ? user.getUsername() : null;
    }

    /**
     * 获取当前用户角色
     *
     * @return 用户角色
     */
    public static Integer getCurrentUserRole() {
        User user = getCurrentUser();
        return user != null ? user.getRole() : null;
    }

    /**
     * 清除当前用户信息
     */
    public static void clear() {
        userHolder.remove();
    }
} 